// var i;
// exports.GamePool = void 0;
// var s = cc._decorator;
// var c = s.ccclass;
// var l = s.property;
// var u = (function () {
//     function e() {
//         this.name = "";
//         this.prefab = null;
//     }
//     __decorate([l()], e.prototype, "name", void 0);
//     __decorate([l(cc.Prefab)], e.prototype, "prefab", void 0);
//     return __decorate([c("AL_GAME_HUA_Prefab")], e);
// })();
// var p = (function (e) {
//     function t() {
//         var t = (null !== e && e.apply(this, arguments)) || this;
//         t.prefabs = [];
//         return t;
//     }
//     var n;
//     __extends(t, e);
//     n = t;
//     Object.defineProperty(t, "Instance", {
//         get: function () {
//             return this.instance;
//         },
//         enumerable: !1,
//         configurable: !0
//     });
//     t.prototype.onLoad = function () {
//         n.instance = this;
//         var e = 0;
//         for (var t = this.prefabs; e < t.length; e++) {
//             var o = t[e];
//             AL_APP_SDK_MANAGER.nodePoolManager.chuangjian_pool(o);
//         }
//     };
//     t.prototype.onDestroy = function () {
//         var e = 0;
//         for (var t = this.prefabs; e < t.length; e++) {
//             var o = t[e];
//             AL_APP_SDK_MANAGER.nodePoolManager.shanchu_pool(o.name);
//         }
//         n.instance = null;
//     };
//     t.prototype.get = function (e) {
//         var t = AL_APP_SDK_MANAGER.nodePoolManager.huoqu_pool(e).get();
//         t.poolName = e;
//         return t;
//     };
//     t.prototype.put = function (e) {
//         var t = e.poolName;
//         AL_APP_SDK_MANAGER.nodePoolManager.huoqu_pool(t).put(e);
//     };
//     t.instance = null;
//     __decorate([l([u])], t.prototype, "prefabs", void 0);
//     return (n = __decorate([c], t));
// })(cc.Component);
// exports.GamePool = p;


// 定义一个变量，用来存储中间值
let index;

// 导出 GamePool 模块
exports.GamePool = void 0;

// 引入 Cocos 引擎的装饰器
const { ccclass, property } = cc._decorator;

/**
 * 类 AL_GAME_HUA_Prefab
 * 该类用于表示预制体和它的名字
 */
@ccclass("AL_GAME_HUA_Prefab")
class AL_GAME_HUA_Prefab {
    // 预制体的名称
    @property()
    name = "";

    // 预制体的实例
    @property(cc.Prefab)
    prefab = null;
}

/**
 * 类 GamePool
 * 该类负责管理游戏中的对象池
 */
@ccclass
class GamePool extends cc.Component {
    // 静态变量，用于保存 GamePool 的实例
    static instance = null;

    // 保存在 inspector 中定义的预制体数组
    @property([AL_GAME_HUA_Prefab])
    prefabs = [];

    /**
     * 返回 GamePool 的单例
     * @returns {GamePool} 单例
     */
    static get Instance() {
        return this.instance;
    }

    /**
     * 组件加载时调用
     */
    onLoad() {
        GamePool.instance = this;
        for (let prefabData of this.prefabs) {
            AL_APP_SDK_MANAGER.nodePoolManager.chuangjian_pool(prefabData);
        }
    }

    /**
     * 组件销毁时调用
     */
    onDestroy() {
        for (let prefabData of this.prefabs) {
            AL_APP_SDK_MANAGER.nodePoolManager.shanchu_pool(prefabData.name);
        }
        GamePool.instance = null;
    }

    /**
     * 从池中获取对象
     * @param {string} poolName - 要获取的对象池的名称
     * @returns {cc.Node} 获取的对象
     */
    get(poolName) {
        let node = AL_APP_SDK_MANAGER.nodePoolManager.huoqu_pool(poolName).get();
        node.poolName = poolName;
        return node;
    }

    /**
     * 将对象放回池中
     * @param {cc.Node} node - 要放回池中的对象
     */
    put(node) {
        let poolName = node.poolName;
        AL_APP_SDK_MANAGER.nodePoolManager.huoqu_pool(poolName).put(node);
    }
}

// 导出 GamePool 类
exports.GamePool = GamePool;